Batch Script এর মধ্যে Error Handling

Microsoft Technologies - ব্যাচ স্ক্রিপ্ট (Batch Script)
206
206

Batch scripting এ error handling এমন একটি প্রক্রিয়া যা আপনাকে স্ক্রিপ্টের চলার সময় ঘটে যাওয়া ত্রুটিগুলোর প্রতি সঠিকভাবে প্রতিক্রিয়া জানাতে সহায়তা করে। এটা বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার স্ক্রিপ্টগুলো বিভিন্ন সিস্টেম কমান্ড বা ফাইল অপারেশনের সাথে যুক্ত থাকে, যেখানে ত্রুটি হওয়া সাধারণ ব্যাপার। Batch script এ ত্রুটি পরিচালনার জন্য সরাসরি try-catch স্টাইলের কোন মেকানিজম নেই, তবে ERRORLEVEL, IF ERRORLEVEL, এবং কিছু সাধারণ টেকনিক্যাল কৌশল ব্যবহার করে আপনি ত্রুটি সনাক্ত ও পরিচালনা করতে পারেন।

ERRORLEVEL এবং IF ERRORLEVEL

Batch script এ ERRORLEVEL একটি বিশেষ ভেরিয়েবল যা পূর্ববর্তী কমান্ডের ফলাফল হিসেবে ফিরে আসে। এটি একটি সংখ্যা, যা কমান্ডের সফলতা বা ব্যর্থতা নির্দেশ করে। সাধারণত:

  • ERRORLEVEL 0: সফলতা (কমান্ড সফলভাবে রান হয়েছে)
  • ERRORLEVEL 1 বা তার উপরে: ত্রুটি (কমান্ডের execution এ সমস্যা হয়েছে)

IF ERRORLEVEL কন্ডিশন ব্যবহার করে আপনি ত্রুটি চেক করতে পারেন এবং প্রয়োজন হলে সংশোধনমূলক পদক্ষেপ নিতে পারেন।

ERRORLEVEL চেক করার উদাহরণ:

@echo off

rem একটি কমান্ড চালানো
dir C:\NonExistentFolder

rem ERRORLEVEL চেক করা
if %ERRORLEVEL% neq 0 (
    echo ত্রুটি ঘটেছে! ডিরেক্টরি পাওয়া যায়নি।
) else (
    echo কমান্ড সফল!
)

pause
exit /b

এখানে dir কমান্ডটি এমন একটি ফোল্ডার চেক করতে চেষ্টা করছে যা অস্তিত্ব নেই, ফলে ত্রুটি ঘটবে এবং ERRORLEVEL 1 বা তার উপরে চলে যাবে। স্ক্রিপ্টের পরবর্তী অংশে ERRORLEVEL চেক করা হয়েছে এবং ত্রুটি থাকলে ব্যবহারকারীকে সতর্ক করা হয়েছে।

Error Handling এর অন্যান্য কৌশল:

  1. Try-Catch Style Error Handling (Simulation): Batch script এ সরাসরি try-catch স্টাইলের error handling নেই, তবে কিছু পরিমাণ ত্রুটি সনাক্ত করার জন্য আপনি নিজের মতো একটি কাঠামো তৈরি করতে পারেন।
@echo off
setlocal

rem একটি ভেরিয়েবল সেট করা
set result=0

rem একটি কমান্ড চালানো (যেমন, একটি ভুল ফোল্ডার খোলা)
dir C:\NonExistentFolder >nul 2>&1

rem ERRORLEVEL চেক করা
if %ERRORLEVEL% neq 0 (
    set result=1
    echo ত্রুটি ঘটেছে! ডিরেক্টরি পাওয়া যায়নি।
) else (
    set result=0
    echo কমান্ড সফল!
)

rem ফলাফল স্ক্রিপ্টে রিটার্ন করা
echo ফলাফল: %result%

pause
exit /b

এখানে 2>&1 ব্যবহার করা হয়েছে যে কোনো ত্রুটি মেসেজ স্ট্যান্ডার্ড আউটপুটে রিডাইরেক্ট হবে এবং ERRORLEVEL চেকের মাধ্যমে সেই ত্রুটির জন্য যথাযথ প্রতিক্রিয়া জানানো হবে।

  1. Custom Error Messages: কখনও কখনও আপনি নিজস্ব ত্রুটি মেসেজ তৈরি করতে চাইতে পারেন, যা ব্যবহারকারীকে বেশি সহায়তা প্রদান করবে।
@echo off

rem একটি কমান্ড চালানো
del C:\NonExistentFile.txt

rem ERRORLEVEL চেক করা এবং কাস্টম ত্রুটি মেসেজ প্রদর্শন করা
if %ERRORLEVEL% neq 0 (
    echo [ERROR] ফাইলটি মুছে ফেলা যায়নি: C:\NonExistentFile.txt
) else (
    echo ফাইল সফলভাবে মুছে ফেলা হয়েছে।
)

pause
exit /b

এখানে del কমান্ডটি এমন একটি ফাইল মুছে ফেলতে চেষ্টা করছে যা অস্তিত্ব নেই। ERRORLEVEL চেক করে কাস্টম ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।

Log Creation for Errors:

স্ক্রিপ্টের ত্রুটি লগ করার জন্য আপনি একটি লোগ ফাইল তৈরি করতে পারেন। এটি স্ক্রিপ্টের ত্রুটি ট্র্যাক করার জন্য উপকারী হতে পারে।

@echo off

rem একটি কমান্ড চালানো
dir C:\NonExistentFolder >nul 2>&1

rem ERRORLEVEL চেক করা এবং লগ তৈরি করা
if %ERRORLEVEL% neq 0 (
    echo %date% %time% - ত্রুটি ঘটেছে! > error.log
    echo ত্রুটি লগে যুক্ত হয়েছে।
) else (
    echo %date% %time% - কমান্ড সফল! >> success.log
    echo সফলতার লগে যুক্ত হয়েছে।
)

pause
exit /b

এখানে error.log এবং success.log ফাইল ব্যবহার করা হচ্ছে ত্রুটি এবং সফলতার তথ্য সংরক্ষণের জন্য।

Script Debugging Tips:

  1. Echo Command:

    • Batch script ডিবাগ করার সবচেয়ে সাধারণ উপায় হলো echo কমান্ড ব্যবহার করা। এটি স্ক্রিপ্টের চলমান অবস্থার তথ্য প্রদান করে।
    @echo on
    

    উপরের কমান্ডটি স্ক্রিপ্টের প্রতিটি কমান্ড এবং আউটপুট প্রিন্ট করবে, যা ডিবাগ করার সময় সহায়ক হতে পারে।

  2. Pause Command:
    • pause কমান্ড ব্যবহার করলে স্ক্রিপ্টটি রানের মাঝে থেমে যায় এবং ব্যবহারকারীকে ত্রুটি বা আউটপুট দেখার সুযোগ দেয়।
  3. Error Redirection:
    • 2>&1 ব্যবহার করে আপনি ত্রুটির আউটপুট এবং স্ট্যান্ডার্ড আউটপুটকে একত্রিত করতে পারেন।

সারাংশ

Batch scripting এ error handling খুবই গুরুত্বপূর্ণ এবং এটি সরাসরি ত্রুটি সনাক্তকরণ এবং প্রতিক্রিয়া জানাতে সহায়তা করে। ERRORLEVEL এবং IF ERRORLEVEL ব্যবহার করে আপনি স্ক্রিপ্টের ত্রুটিগুলি চেক করতে পারেন এবং যথাযথ পদক্ষেপ নিতে পারেন। আরও উন্নত error handling করতে custom error messages, log files এবং ডিবাগging টেকনিক ব্যবহার করা যেতে পারে। Batch script এ সরাসরি try-catch সমর্থিত না হলেও, সঠিক error handling কৌশল ব্যবহার করে আপনি স্ক্রিপ্টের কার্যকারিতা বাড়াতে পারেন।

common.content_added_by

Error Level এবং Exit Code চেক করা

222
222

Batch Script-এ Error Level এবং Exit Code ব্যবহার করে আপনি একটি কমান্ডের সফলতা বা ব্যর্থতা নির্ধারণ করতে পারেন। যখন একটি কমান্ড রান করা হয়, তখন এটি একটি Exit Code বা Error Level রিটার্ন করে, যা কমান্ডটির সম্পন্ন হওয়ার অবস্থা নির্দেশ করে।

এই Exit Code বা Error Level বিভিন্ন পরিস্থিতিতে সফলতা বা ত্রুটি নির্দেশ করার জন্য ব্যবহৃত হয়। সাধারণত, 0 মানে সফল এবং 1 বা অন্য কোনো ধনাত্মক সংখ্যা মানে ত্রুটি।

Error Level বা Exit Code কী?

  • Exit Code: এটি একটি কোড, যা একটি কমান্ড বা প্রোগ্রাম চালানোর পর রিটার্ন হয় এবং এটি কমান্ডের সফলতা বা ব্যর্থতা নির্দেশ করে।
    • 0: সফলভাবে কমান্ডটি সম্পন্ন হয়েছে।
    • 1 বা অন্য কোনো ধনাত্মক কোড: কমান্ডটি সম্পন্ন হতে পারেনি বা ত্রুটি ঘটেছে।
  • Error Level: এটি একটি সিস্টেম ভেরিয়েবল যা সর্বশেষ রান হওয়া কমান্ডের Exit Code ধারণ করে। Batch Script-এ, কমান্ডের পরবর্তী স্টেটমেন্টে Error Level চেক করতে পারেন।

Error Level চেক করার পদ্ধতি

Batch Script-এ Error Level চেক করতে if স্টেটমেন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:

echo Hello, World!
echo.

:: Error Level চেক করা
if %errorlevel% equ 0 (
    echo Command was successful.
) else (
    echo Command failed with Error Level %errorlevel%.
)

এখানে:

  • %errorlevel%: এটি সর্বশেষ কমান্ডের Exit Code ধারণ করে।
  • equ: এটি "equal" অর্থে ব্যবহৃত হয়। এখানে এটি চেক করছে যে %errorlevel% 0 এর সমান কি না।

কিছু সাধারণ Exit Code

Batch Script-এর কিছু সাধারণ Exit Code এবং তাদের মানের অর্থ:

  • 0: কমান্ড সফলভাবে সম্পন্ন হয়েছে।
  • 1: সাধারণ ত্রুটি।
  • 2: ব্যবহারকারী ইনপুট ত্রুটি বা ইনভ্যালিড সেন্ট্যাক্স।
  • 3: আর্গুমেন্ট সম্পর্কিত ত্রুটি।
  • 4: এক্সেস ডিনায়াল বা অনুমতির ত্রুটি।

Error Level চেক করে কমান্ডের ফলাফল প্রাপ্তি

ধরা যাক আপনি dir কমান্ড ব্যবহার করছেন এবং ফোল্ডারটি আছে কি না তা চেক করতে চান:

dir myfolder > nul 2>&1
if %errorlevel% equ 0 (
    echo Directory exists.
) else (
    echo Directory does not exist.
)

এখানে:

  • dir myfolder: এটি myfolder নামক ফোল্ডারটি দেখতে চায়।
  • > nul 2>&1: এর মাধ্যমে আউটপুট এবং এরর মেসেজ সমূহ nul এ রিডাইরেক্ট করা হয় যাতে স্ক্রিপ্টটি সাইলেন্টলি চলে।
  • %errorlevel%: এটি চেক করে যে কমান্ডটি সফলভাবে সম্পন্ন হয়েছে কি না। যদি 0 হয়, তাহলে Directory exists মেসেজ প্রদর্শিত হবে, অন্যথায় Directory does not exist মেসেজ প্রদর্শিত হবে।

Example: Error Level সহ ফাইল অপারেশন

এখন চলুন দেখিঃ আমরা ফাইল কপি করার একটি উদাহরণ দিচ্ছি এবং তাতে Error Level চেক করব:

copy myfile.txt backup.txt
if %errorlevel% equ 0 (
    echo File was copied successfully.
) else (
    echo File copy failed with Error Level %errorlevel%.
)

এখানে:

  • copy myfile.txt backup.txt: এটি myfile.txt ফাইলটিকে backup.txt এ কপি করার চেষ্টা করবে।
  • %errorlevel%: এর মাধ্যমে আপনি চেক করতে পারেন যে কপি অপারেশনটি সফল হয়েছে কিনা। যদি সফল হয়, তবে "File was copied successfully." মেসেজটি দেখাবে, অন্যথায় ত্রুটির কোডসহ একটি মেসেজ দেখাবে।

Exit Code ব্যবহার করে শাটডাউন স্ক্রিপ্ট

ধরা যাক আপনি একটি স্ক্রিপ্ট লিখছেন যা একটি কম্পিউটার শাটডাউন করবে, তবে শাটডাউন সফল হয়েছে কি না তা চেক করতে চান। এখানে Exit Code ব্যবহার করা হবে:

shutdown /s /f
if %errorlevel% equ 0 (
    echo Shutdown initiated successfully.
) else (
    echo Shutdown failed with Error Level %errorlevel%.
)

এখানে:

  • shutdown /s /f: এটি সিস্টেমকে শাটডাউন করবে।
  • %errorlevel%: শাটডাউন কমান্ডের পরবর্তী Exit Code চেক করা হবে। 0 হলে সফল এবং অন্য কোনো কোড হলে ত্রুটি।

সারাংশ

Batch Script-এ Error Level এবং Exit Code ব্যবহার করে আপনি কমান্ডের সফলতা বা ব্যর্থতা নির্ধারণ করতে পারেন। এটা বিশেষভাবে স্ক্রিপ্টের মধ্যে ত্রুটি শনাক্তকরণ এবং ত্রুটি ভিত্তিক সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত হয়। যখন একটি কমান্ড চালানো হয়, তখন সেটি একটি Exit Code প্রদান করে, যা দ্বারা আপনি স্ক্রিপ্টের পরবর্তী লজিক নির্ধারণ করতে পারেন। Error Level চেক করে আপনি ফাইল অপারেশন, কমান্ড রান, বা অন্যান্য কার্যাবলী সফল হয়েছে কি না তা সঠিকভাবে জানতে পারবেন।

common.content_added_by

Try-Catch এর মতো Error Handling

204
204

Batch Script এ সরাসরি try-catch ব্লক যেমন আপনি অন্যান্য প্রোগ্রামিং ভাষায় যেমন C# বা Java এ দেখতে পান, তা ব্যবহার করা যায় না। তবে, Batch Script এ Error Handling করা সম্ভব এবং কিছু কমান্ডের মাধ্যমে আপনি ত্রুটি শনাক্ত এবং পরিচালনা করতে পারেন। Batch Script এ Error Handling করার জন্য সাধারণত ErrorLevel এবং IF কন্ডিশন ব্যবহার করা হয়। এখানে, আমরা try-catch এর মতো ত্রুটি পরিচালনার কিছু কৌশল আলোচনা করব, যা Batch Script এর সাথে কাজ করতে সাহায্য করবে।

ErrorLevel ব্যবহার করে Error Handling

Batch Script এ কোনো কমান্ড চালানোর পর তার ফলাফল বা স্ট্যাটাস কোড (Exit Code) দেখার জন্য ErrorLevel ব্যবহার করা হয়। ErrorLevel এর মান অনুযায়ী আপনি ত্রুটি চেক করতে পারেন এবং সেই অনুযায়ী স্ক্রিপ্টের আচরণ পরিবর্তন করতে পারেন।

ErrorLevel কী?

ErrorLevel হল একটি স্ট্যাটাস কোড যা সাধারণত কোনো কমান্ডের সফলতা বা ব্যর্থতার তথ্য প্রদান করে:

  • 0 মানে কমান্ড সফলভাবে সম্পন্ন হয়েছে।
  • 1 বা তার বেশি মানে কমান্ডে ত্রুটি ঘটেছে।

উদাহরণ:

@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 (
    echo Error occurred during file copy.
) else (
    echo File copied successfully.
)

এখানে:

  • copy কমান্ডটি চালানোর পর %errorlevel% চেক করা হচ্ছে।
  • যদি ErrorLevel 0 না হয় (অর্থাৎ, যদি কোনো ত্রুটি ঘটে), তবে Error occurred during file copy মেসেজটি প্রদর্শিত হবে।
  • অন্যথায়, File copied successfully মেসেজটি দেখানো হবে।

ErrorLevel এর আরো বিস্তারিত ব্যবহার

কিছু পরিস্থিতিতে, আপনি নির্দিষ্ট ত্রুটি কোড চেক করতে চাইলে, ErrorLevel এর বিভিন্ন মানের সাথে কাজ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি জানেন যে কোনো নির্দিষ্ট কমান্ড 1 বা 2 এর মধ্যে কোনো ত্রুটি সৃষ্টি করবে, তাহলে আপনি সেগুলোকেও চেক করতে পারেন।

উদাহরণ:

@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% == 1 (
    echo File not found.
) else if %errorlevel% == 2 (
    echo Access denied.
) else if %errorlevel% neq 0 (
    echo Unknown error occurred.
) else (
    echo File copied successfully.
)

এখানে:

  • যদি ErrorLevel 1 হয়, তা হলে File not found মেসেজটি দেখানো হবে।
  • যদি ErrorLevel 2 হয়, তা হলে Access denied মেসেজটি প্রদর্শিত হবে।
  • অন্য কোনো ErrorLevel থাকলে Unknown error occurred মেসেজটি দেখানো হবে।
  • যদি ErrorLevel 0 থাকে, তবে File copied successfully মেসেজটি প্রদর্শিত হবে।

Goto এবং Error Handling

Batch Script এ ত্রুটি পরিচালনার জন্য goto কমান্ডও ব্যবহার করা যেতে পারে। goto ব্যবহার করে আপনি একটি নির্দিষ্ট লেবেলে চলে যেতে পারেন যদি কোনো ত্রুটি ঘটতে থাকে, যাতে পরবর্তী কমান্ডগুলো এক্সিকিউট না হয় বা আপনি ত্রুটির পরবর্তী পদক্ষেপ নিতে পারেন।

উদাহরণ:

@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 goto ErrorHandler
echo File copied successfully.
goto End

:ErrorHandler
echo Error occurred during file copy.
goto End

:End

এখানে:

  • যদি copy কমান্ডে ত্রুটি ঘটে, তাহলে স্ক্রিপ্টটি ErrorHandler লেবেলে চলে যাবে এবং ত্রুটির মেসেজ প্রদর্শন করবে।
  • যদি কোনো ত্রুটি না ঘটে, তবে File copied successfully মেসেজটি প্রদর্শিত হবে।

Logs তৈরি এবং Error Logging

ত্রুটির লগ তৈরি করার জন্য Batch Script এ আপনি সহজেই ত্রুটির তথ্য একটি টেক্সট ফাইলে সংরক্ষণ করতে পারেন। এটি মূলত স্ক্রিপ্টের ডিবাগিং এবং ত্রুটি শনাক্তকরণে সাহায্য করে।

উদাহরণ:

@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 (
    echo Error occurred at %date% %time%: Error level %errorlevel% >> C:\error_log.txt
    echo Error occurred. Check error_log.txt for details.
) else (
    echo File copied successfully.
)

এখানে:

  • যদি কোনো ত্রুটি ঘটে, তাহলে ত্রুটির সময়, তারিখ এবং ErrorLevel সহ একটি লগ ফাইল (C:\error_log.txt) তৈরি হবে।
  • আপনি >> অপারেটর ব্যবহার করে লগ ফাইলে নতুন ত্রুটি যুক্ত করতে পারেন।

Batch Script এ Error Handling এর সীমাবদ্ধতা

Batch Script এ ত্রুটি পরিচালনা করার জন্য সরাসরি try-catch ব্লক নেই, তবে ErrorLevel এবং if কন্ডিশন ব্যবহার করে আপনি কার্যকরভাবে ত্রুটি পরিচালনা করতে পারেন। তবে, এর কিছু সীমাবদ্ধতা রয়েছে:

  • এটি একটি প্রাথমিক স্তরের ত্রুটি শনাক্তকরণ এবং পরিচালনা প্রদান করে।
  • কোনো গভীর ত্রুটি বিশ্লেষণ বা ফাংশনাল ত্রুটি হ্যান্ডলিং (যেমন Exception Handling) করতে Batch Script কম কার্যকর হতে পারে।

সারাংশ

Batch Script এ সরাসরি try-catch ব্যবহার করা সম্ভব না হলেও, ErrorLevel এবং if কন্ডিশনের মাধ্যমে ত্রুটি পরিচালনা করা সম্ভব। আপনি বিভিন্ন ত্রুটি কোডের উপর ভিত্তি করে নির্দিষ্ট পদক্ষেপ নিতে পারেন, যেমন ফাইল কপি করতে ব্যর্থ হলে একটি লগ তৈরি করা বা স্ক্রিপ্টটি বন্ধ করে দেওয়া। goto কমান্ডের মাধ্যমে আপনি ত্রুটির পরবর্তী প্রক্রিয়াও নির্ধারণ করতে পারেন, যাতে স্ক্রিপ্টটি আরও স্থিতিশীল এবং কার্যকর হয়।

common.content_added_by

Logs তৈরি করা এবং Logging Techniques

180
180

Batch Script ব্যবহার করে লগ তৈরি করা এবং লগিং টেকনিকগুলি প্রয়োগ করা অনেক গুরুত্বপূর্ণ যখন আপনাকে স্ক্রিপ্টের কার্যকারিতা ট্র্যাক করতে হয় অথবা কোনো সমস্যা বা ত্রুটি ডিবাগ করতে হয়। লগ ফাইলগুলো স্ক্রিপ্টের আউটপুট বা ত্রুটি সনাক্তকরণে সাহায্য করে, এবং সেগুলোর মাধ্যমে স্ক্রিপ্টের কার্যক্রমের বিস্তারিত বিবরণ পাওয়া যায়।

লগ ফাইল তৈরি করা

লগ ফাইল তৈরি করতে, সাধারণত echo কমান্ড ব্যবহার করা হয় যাতে স্ক্রিপ্টের আউটপুট বা মেসেজ একটি নির্দিষ্ট ফাইলে রিডাইরেক্ট করা যায়। ফাইলটি তৈরি হবে যদি তা আগে থেকেই না থাকে, আর যদি থাকে তাহলে তার মধ্যে নতুন তথ্য যোগ হবে।

echo This is a log message >> C:\path\to\logfile.txt

এখানে:

  • echo কমান্ডটি লগ মেসেজ তৈরি করে।
  • >> এর মাধ্যমে আউটপুট একটি ফাইলে রিডাইরেক্ট করা হয়। যদি ফাইলটি না থাকে, এটি নতুন ফাইল তৈরি করবে।
  • logfile.txt হল সেই ফাইল যেখানে লগ ইনফরমেশন সেভ হবে।

লগ ফাইলের মধ্যে টাইমস্ট্যাম্প যোগ করা

লগের মধ্যে সময় এবং তারিখ যোগ করতে, আপনাকে Windows কমান্ড প্রম্পটের মাধ্যমে সিস্টেমের বর্তমান সময় এবং তারিখ বের করার জন্য %date% এবং %time% ভেরিয়েবল ব্যবহার করতে হবে। টাইমস্ট্যাম্প লগ মেসেজের অংশ হিসেবে অন্তর্ভুক্ত করা অনেক ভালো প্র্যাকটিস।

echo %date% %time% - This is a log message >> C:\path\to\logfile.txt

এটি লগ ফাইলে প্রতিটি মেসেজের আগে বর্তমান তারিখ এবং সময় অন্তর্ভুক্ত করবে।

লগ ফাইলে ত্রুটি সনাক্তকরণ

যখন কোনো স্ক্রিপ্টে ত্রুটি ঘটে, তখন তাকে লগ ফাইলে টোকেন বা মেসেজ হিসেবে যোগ করা অত্যন্ত গুরুত্বপূর্ণ। আপনি স্ক্রিপ্টের এক্সিকিউশন স্ট্যাটাস চেক করতে errorlevel ব্যবহার করতে পারেন। যদি কোনো ত্রুটি ঘটে, আপনি সেই ত্রুটির জন্য একটি মেসেজ লগ ফাইলে লিখে রাখতে পারেন।

echo %date% %time% - Script started >> C:\path\to\logfile.txt

:: Some command that might fail
somecommand.exe

if %errorlevel% neq 0 (
    echo %date% %time% - Error occurred during command execution >> C:\path\to\logfile.txt
) else (
    echo %date% %time% - Command executed successfully >> C:\path\to\logfile.txt
)

এখানে:

  • %errorlevel% চেক করা হয়, যা কমান্ডের আউটপুট স্ট্যাটাস রিটার্ন করে।
  • neq 0 মানে যদি ত্রুটি ঘটে (যতক্ষণ না আউটপুট স্ট্যাটাস 0 হয়)।

লগিং পদ্ধতি - লগ রোলিং

যদি আপনি দীর্ঘ সময় ধরে স্ক্রিপ্ট চালান এবং প্রতিদিন বা প্রতি কিছু নির্দিষ্ট সময়ে নতুন লগ ফাইল তৈরি করতে চান, তাহলে লগ রোলিং পদ্ধতি ব্যবহার করা যেতে পারে। একে একটি নির্দিষ্ট সময়ের মধ্যে নতুন লগ ফাইল তৈরি করার জন্য ব্যবহৃত হয়, যাতে পুরনো লগ ফাইলটি অগণিত তথ্যের মধ্যে হারিয়ে না যায়।

set logfile=C:\path\to\logfile_%date:~-4,4%%date:~4,2%%date:~7,2%.txt
echo %date% %time% - This is a log message >> %logfile%

এখানে:

  • %date:~-4,4%, %date:~4,2%, %date:~7,2% ব্যবহার করে বর্তমান তারিখের সাল, মাস, এবং দিন নিয়ে একটি নতুন ফাইলনাম তৈরি করা হয়েছে, যার মাধ্যমে প্রতি দিনের জন্য আলাদা একটি লগ ফাইল তৈরি হবে।

লগ ফাইল আউটপুটের ফরম্যাটিং

লগ ফাইলের আউটপুট সুন্দর এবং পাঠযোগ্য করার জন্য, আপনি নির্দিষ্ট ফরম্যাট ব্যবহার করতে পারেন, যাতে লগের মধ্যে গুরুত্বপূর্ণ তথ্য স্পষ্টভাবে দেখা যায়। সাধারণত echo কমান্ডের মাধ্যমে আউটপুট ফরম্যাট করতে tab বা space ব্যবহার করা হয়।

echo %date% %time% - INFO: The script has started. >> C:\path\to\logfile.txt
echo %date% %time% - ERROR: Failed to run command >> C:\path\to\logfile.txt

এখানে:

  • INFO এবং ERROR স্ট্যাটাস ব্যবহার করে লোগের গুরুত্ব নির্ধারণ করা হয়েছে।

লগ ফাইল পরিষ্কার করা

যদি আপনি চান যে লগ ফাইলটি নতুন স্ক্রিপ্ট রান করার সময় পুরনো লগ ডেটা থেকে পরিষ্কার হয়ে যাক, তাহলে ফাইলটি প্রথমে ডিলিট করে নতুন করে তৈরি করতে পারেন।

del C:\path\to\logfile.txt
echo %date% %time% - New Log Started >> C:\path\to\logfile.txt

এটি পুরনো লগ ফাইল মুছে দিয়ে একটি নতুন লগ ফাইল তৈরি করবে।

স্ক্রিপ্ট ডিবাগিং

Batch Script এ ডিবাগিং করার জন্য লগ ব্যবহার করা একটি খুব কার্যকর পদ্ধতি। স্ক্রিপ্টের প্রতিটি ধাপে যদি লগ মেসেজ থাকে, তাহলে কোনো ত্রুটি ঘটলে সহজেই ডিবাগ করা সম্ভব হয়।

echo %date% %time% - Starting the process >> C:\path\to\logfile.txt

:: Do some task
echo %date% %time% - Task 1 completed >> C:\path\to\logfile.txt

:: Do another task
echo %date% %time% - Task 2 completed >> C:\path\to\logfile.txt

:: End of script
echo %date% %time% - Script execution completed >> C:\path\to\logfile.txt

এখানে, স্ক্রিপ্টের প্রতিটি গুরুত্বপূর্ণ ধাপের পরে লগ ইনফরমেশন যোগ করা হচ্ছে, যাতে স্ক্রিপ্টের কোনো ধাপে সমস্যা হলে তা সহজে শনাক্ত করা যায়।

সারাংশ

Batch Script এ লগ তৈরি করা এবং লগিং টেকনিক ব্যবহার করা খুবই গুরুত্বপূর্ণ। লগ ফাইলের মাধ্যমে আপনি স্ক্রিপ্টের কার্যকারিতা ট্র্যাক করতে পারবেন এবং ত্রুটির সনাক্তকরণে সাহায্য পেতে পারেন। echo, %date%, %time%, এবং errorlevel ব্যবহার করে লগ মেসেজ তৈরি করা যায় এবং ফাইলের মধ্যে সময় এবং তারিখ যোগ করা যায়। এছাড়া, লগ রোলিং, ফরম্যাটিং, এবং ডিবাগিং পদ্ধতিগুলি ব্যবহার করে আপনি আপনার স্ক্রিপ্টের কার্যকারিতা আরও উন্নত করতে পারেন।

common.content_added_by

Script Debugging Tips এবং Techniques

243
243

Batch Script Debugging একটি গুরুত্বপূর্ণ ধাপ, বিশেষত যখন স্ক্রিপ্টে সমস্যা হয় বা আপনি নিশ্চিত হতে চান যে আপনার স্ক্রিপ্ট ঠিকভাবে কাজ করছে। যখন আপনি Batch Scripting ব্যবহার করেন, তখন স্ক্রিপ্টের ত্রুটি চিহ্নিত করা এবং তা সমাধান করা কিছুটা চ্যালেঞ্জিং হতে পারে, তবে কিছু সহজ কৌশল এবং টিপস ব্যবহার করে আপনি এই কাজটি সহজ করে নিতে পারেন।

1. Echo Command ব্যবহার করা

একটি সাধারণ কিন্তু কার্যকরী টুল হল echo কমান্ড। স্ক্রিপ্টের মধ্যে কোথায় সমস্যা হচ্ছে তা দেখতে, আপনি বিভিন্ন অংশের আউটপুট দেখতে পারেন। আপনি আপনার স্ক্রিপ্টের বিভিন্ন পয়েন্টে echo কমান্ড ব্যবহার করতে পারেন যাতে আপনি বুঝতে পারেন কোন লাইনটি কার্যকরী হচ্ছে বা কোন লাইনটি ত্রুটি সৃষ্টি করছে।

উদাহরণ:

echo Checking file existence...
if exist myfile.txt (
    echo File exists
) else (
    echo File not found
)

এটি স্ক্রিপ্টের মধ্যবর্তী স্টেটমেন্টগুলো আউটপুট হিসেবে প্রদর্শন করবে, যা আপনাকে স্ক্রিপ্টের কোথায় সমস্যা হতে পারে তা বুঝতে সাহায্য করবে।

2. Echo On/Off ব্যবহার করা

এটি একটি খুবই উপকারী কৌশল যখন আপনি স্ক্রিপ্টের প্রত্যেকটি কমান্ডের আউটপুট দেখতে চান। echo on দিয়ে আপনি স্ক্রিপ্টের প্রতিটি কমান্ডের আউটপুট দেখতে পাবেন। আর echo off দিয়ে আপনি কমান্ড লাইন থেকে অপ্রয়োজনীয় আউটপুট সরাতে পারবেন।

উদাহরণ:

@echo off
echo Starting script...
echo This is a test message.

এখানে echo off ব্যবহৃত হয়েছে যাতে স্ক্রিপ্টের প্রথম কমান্ডটি echo আউটপুট প্রদর্শন না করে। আপনি যদি স্ক্রিপ্টের মধ্যে ডিবাগিং করতে চান, তবে echo on ব্যবহার করুন।

3. Pause Command ব্যবহার করা

pause কমান্ড ব্যবহার করে আপনি স্ক্রিপ্টের execution স্থগিত করতে পারেন, যাতে স্ক্রিপ্ট চলমান অবস্থায় আপনি আউটপুট দেখতে পারেন। এটি একটি ভাল পদ্ধতি যখন আপনি স্ক্রিপ্টটি চালানোর পর অপ্রত্যাশিত ফলাফল পেতে পারেন এবং তা পর্যালোচনা করতে চান।

উদাহরণ:

echo Starting the script...
pause

এটি স্ক্রিপ্টের execution থামিয়ে দেয় এবং আপনি স্ক্রিপ্টের আউটপুট দেখতে পারবেন। পরবর্তীতে কীবোর্ড থেকে একটি কী চাপলেই স্ক্রিপ্ট আবার চলতে শুরু করবে।

4. Errorlevel এবং Exit Codes ব্যবহার করা

Errorlevel একটি বিশেষ পরিবেশ ভেরিয়েবল, যা পূর্ববর্তী কমান্ডের ফলাফল সংরক্ষণ করে। এটি ব্যবহার করে আপনি স্ক্রিপ্টের মধ্যে ত্রুটি সনাক্ত করতে পারেন এবং পরবর্তী পদক্ষেপ নিতে পারেন।

যেকোনো কমান্ড সফলভাবে সম্পন্ন হলে Errorlevel ভ্যালু 0 থাকে এবং ত্রুটি ঘটলে এটি কোনো ধরণের ধনাত্মক মান (যেমন 1, 2 ইত্যাদি) ধারণ করে।

উদাহরণ:

echo Running a command...
somecommand.exe
if errorlevel 1 (
    echo Error occurred during command execution
)

এটি দেখাবে যদি পূর্ববর্তী কমান্ডের আউটপুট errorlevel 1 বা তার বেশি হয়, তবে একটি ত্রুটি ঘটেছে এবং আপনার স্ক্রিপ্ট সেই অনুযায়ী কাজ করবে।

5. Logs তৈরি করা এবং Logging Techniques

Batch Script-এ লগ ফাইল তৈরি করার মাধ্যমে আপনি স্ক্রিপ্টের ক্রমাগত কার্যকলাপ ট্র্যাক করতে পারেন। আপনি স্ক্রিপ্টের আউটপুট ফাইলের মধ্যে লগ করতে পারেন, যাতে পরে পর্যালোচনা করতে পারেন কোথায় সমস্যা হয়েছে। এই উদ্দেশ্যে echo কমান্ড ব্যবহার করে আউটপুট একটি ফাইলের মধ্যে লেখা যেতে পারে।

উদাহরণ:

echo Starting script > script_log.txt
echo Performing Task 1... >> script_log.txt
echo Task 1 Completed >> script_log.txt

এখানে, >> ব্যবহার করে আউটপুট ফাইলের শেষে তথ্য যোগ করা হচ্ছে এবং > ব্যবহার করে নতুন ফাইলে তথ্য লেখা হচ্ছে। এতে আপনি স্ক্রিপ্টের কার্যকলাপের একটি পূর্ণাঙ্গ লগ ফাইল তৈরি করতে পারবেন।

6. Syntax এবং Logic Errors চিহ্নিত করা

স্ক্রিপ্টে সিনট্যাক্স বা লজিক্যাল ত্রুটি সনাক্ত করতে:

  • Syntax Errors সাধারণত ভুল কমান্ড, ভুল শব্দ বা কমান্ডের পরামর্শ (syntax) ভুল হওয়ার কারণে ঘটে।
  • Logic Errors সাধারণত কমান্ড বা স্টেটমেন্টের ভুল ব্যবহারের কারণে ঘটে, যেখানে স্ক্রিপ্ট কেবল ভুলভাবে কাজ করে কিন্তু সিনট্যাক্স ঠিক থাকে।

উদাহরণ:

echo "Hello World"

উপরের কমান্ডে আপনি একটি ভুল দেখতে পাবেন কারণ echo কমান্ডে উদ্ধৃতি চিহ্ন ব্যবহার করার প্রয়োজন নেই। সঠিকভাবে লেখা হবে:

echo Hello World

7. Debugger ব্যবহার করা (External Tools)

আপনি চাইলে Batch Script ডিবাগ করতে তৃতীয় পক্ষের টুল বা IDE ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি Notepad++ বা Visual Studio Code-এর মত টেক্সট এডিটর ব্যবহার করে স্ক্রিপ্ট লেখার সময় ত্রুটিগুলি চিহ্নিত করতে পারেন। এই এডিটরগুলো সিনট্যাক্স হাইলাইটিং এবং কিছু বেসিক স্ক্রিপ্ট ডিবাগিং টুলস অফার করে থাকে।

8. Comments ব্যবহার করা

স্ক্রিপ্টের মধ্যে comments ব্যবহার করা, যেগুলি REM বা :: দিয়ে শুরু হয়, ডিবাগিং প্রক্রিয়াকে সহজ করে তোলে। আপনি একটি নির্দিষ্ট লাইন বা কোড ব্লক নিষ্ক্রিয় (disable) করতে পারেন, যাতে সেগুলি রান না হয় এবং অন্যান্য অংশে ফোকাস করতে পারেন।

উদাহরণ:

REM This is a comment explaining the next line
echo Starting script...

এটি স্ক্রিপ্টে মন্তব্য যুক্ত করবে এবং সেই লাইনটি কার্যকরী হবে না।

9. Script Optimization

যদি আপনার স্ক্রিপ্টটি খুব বড় হয় বা ধীরে চলে, তবে কিছু অপটিমাইজেশন কৌশল ব্যবহার করা দরকার। যেমন:

  • অপ্রয়োজনীয় কোড সরিয়ে ফেলুন।
  • লুপ এবং কন্ডিশনাল স্টেটমেন্টগুলোকে কার্যকরভাবে ব্যবহার করুন।
  • দীর্ঘ স্ক্রিপ্টে functions এবং subroutines ব্যবহার করে কোডের পুনঃব্যবহারযোগ্যতা বাড়ান।

সারাংশ

  • Batch Script Debugging এর জন্য বিভিন্ন কৌশল এবং টিপস রয়েছে, যেমন echo, pause, errorlevel, logging, এবং comments
  • Errorlevel এবং exit codes ব্যবহার করে আপনি স্ক্রিপ্টের ত্রুটি চিহ্নিত করতে পারেন।
  • Logging পদ্ধতি ব্যবহার করে আপনি স্ক্রিপ্টের কার্যকলাপ ট্র্যাক করতে পারেন এবং পরে ডিবাগিং করতে পারেন।
  • Syntax এবং logic errors চিহ্নিত করতে স্ক্রিপ্টের প্রতিটি অংশ পরীক্ষা করা এবং সংশোধন করা দরকার।
  • Batch Script Optimization স্ক্রিপ্টের কার্যক্ষমতা উন্নত করতে সাহায্য করে।

ডিবাগিং এবং অপটিমাইজেশন প্রক্রিয়া সঠিকভাবে অনুসরণ করলে আপনি সহজেই স্ক্রিপ্টে ত্রুটি চিহ্নিত করতে পারবেন এবং কার্যকারিতা বৃদ্ধি করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion